package com.woniuxy.pxxt.dao;


import com.woniuxy.pxxt.common.vo.exam.AnswerArrayElementVo;
import com.woniuxy.pxxt.common.vo.test.TestVo;
import com.woniuxy.pxxt.dto.exam.ExamDto;
import com.woniuxy.pxxt.dto.SelectMenuDto;

import com.woniuxy.pxxt.entity.Test;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 考试的题目(PxxtTest)表数据库访问层
 *
 * @author makejava
 * @since 2022-03-07 15:19:14
 */
public interface TestDao {
    /**
     ** @Todo 向数据库添加试题
     ** @ChangeLog : 1. 创建 (2022/3/7 21:14 [陈子遥]);
     ** @param
     ** @return
     */
     Integer addTest(Test test);

    /**
     ** @Todo 查询所有试题
     ** @ChangeLog : 1. 创建  [陈子遥];
     ** @Date 2022/3/8 : 12:01
     ** @param
     ** @return
     */
    public List<Test> findTest(Test test);

    /**
     ** @Todo 通过id删除试题
     ** @ChangeLog : 1. 创建  [陈子遥];
     ** @Date 2022/3/8 : 17:10
     ** @param
     ** @return
     */
    Integer  deleteById(Integer id);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:
     * <P>Date 17:18 2022/3/8
     * <P>* @param userId
* @param trainId
     * <P>* @return int
     **/
    Double findTestScore(@Param("userId") Integer userId,
                      @Param("trainId")  Integer trainId);

    /**
     *<P> @MethodName: findSingleQuestion
     *<P> @TODO 根据培训ID查询所有单选题
     *<P> @param trainId:
     *<P> @return: java.util.List<com.woniuxy.pxxt.dto.exam.ExamDto>
     *<P> @Date 2022/3/14 10:08
    **/
    List<ExamDto> findSingleQuestion(Integer trainId);

    List<ExamDto> findMultipleQuestion(Integer trainId);

    /**
     ** @Todo 根据难度查找题库试题
     ** @ChangeLog : 1. 创建  [陈子遥];
     ** @Date 2022/3/12 : 16:10
     ** @param
     ** @return
     */

    List<SelectMenuDto> findDifficultyStatus();

    /**
     ** @Todo 根据单选多选查找试题
     ** @ChangeLog : 1. 创建  [陈子遥];
     ** @Date 2022/3/12 : 16:12
     ** @param
     ** @return
     */
    List<SelectMenuDto> findMultilyStatus();

    /**
     ** @Todo 根据传入的培训名称更新test表的trainId
     ** @ChangeLog : 1. 创建  [陈子遥];
     ** @Date 2022/3/15 : 16:36
     ** @param
     ** @return
     */
    void updateTestTrainId(@Param("trainName") String trainName,
                           @Param("testName") String testName);


    /**
     *<P> @MethodName: findRadioAnswer
     *<P> @TODO 根据用户答案查询出对应的正确答案
     *<P> @param radioAnswer:
     *<P> @return: java.util.List<java.lang.String>
     *<P> @Date 2022/3/17 10:00
    **/
    List<String> findAnswer(List<AnswerArrayElementVo> radioAnswer);

    int updateTestById(@Param("id")Integer id,
                       @Param("answer") String answer);
}

